package org.example.campusforum.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 文章查询请求数据传输对象
 *
 * 用于接收前端发送的文章查询请求参数，支持多种查询条件和排序方式。
 * 提供分页查询功能，支持按用户ID、标题、分类等条件筛选文章。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ArticleGet {

    /**
     * 页码
     * 指定要查询的页数，从1开始计数
     */
    private int page;

    /**
     * 每页记录数
     * 指定每页显示的文章数量，用于分页计算
     */
    private int pageSize;

    /**
     * 用户ID
     * 用于查询指定用户发布的文章，可选参数
     */
    private int id;

    /**
     * 文章标题关键词
     * 用于模糊查询文章标题，支持部分匹配，可选参数
     */
    private String title;

    /**
     * 文章分类ID
     * 用于查询指定分类下的文章，可选参数
     */
    private Long categoryId;

    /**
     * 排序类型
     * 1: 默认排序（按创建时间降序）
     * 2: 按点赞数降序排列
     * 3: 按浏览量降序排列
     * 4: 按评论量降序排列
     */
    private Long sortType;

}
